home *** CD-ROM | disk | FTP | other *** search
- 10 DEFINT I-K, O
- 20 CLS : SCREEN 0: WIDTH 80: KEY OFF
- 30 DIM Y(1000), T(5), P8(10), P9(10)
- 40 DIM NAM$(1000), ORJ(1000)
- 50 COLOR 15, 0
- 60 '..............................................DISPLAY INTRO
- 70 LOCATE 5, 29: PRINT "PC-CAI Grading Program"
- 80 LOCATE 8, 10: PRINT "This program is provided to give you an example of how to"
- 90 LOCATE 9, 10: PRINT "extract information from the grade file created by PC-CAI."
- 100 LOCATE 10, 10: PRINT "You may have to change the program to meet your specific needs."
- 110 PRINT : PRINT
- 120 PRINT "(D)irectory (G)rade (E)nd Please Choose :"; : LOCATE , , 1
- 130 Q$ = INKEY$: IF Q$ = "" THEN 130
- 140 PRINT Q$; : IF Q$ = "D" OR Q$ = "d" THEN 180'......directory
- 150 IF Q$ = "G" OR Q$ = "g" THEN 210'..................grade
- 160 IF Q$ = "E" OR Q$ = "e" THEN CLS : SYSTEM'.........end program
- 170 GOTO 130
- 180 PRINT : PRINT "Input directory specification (i.e., A:*.OUT) :"; : INPUT SD$
- 190 FILES SD$: PRINT : GOTO 120
- 200 '..................................................................grade
- 210 PRINT : PRINT "GRADING SELECTION": PRINT
- 220 PRINT "Please indicate the name of the grade file you wish to use."
- 230 PRINT "ENTER NAME OF GRADE FILE :"; : INPUT GF$
- 240 ON ERROR GOTO 260
- 250 CLOSE 1: OPEN "i", 1, GF$: GOTO 270
- 260 SOUND 100, 10: PRINT : PRINT "ERROR *** GRADE FILE NAMED "; GF$; " NOT FOUND.": RESUME 120
- 270 ON ERROR GOTO 0
- 280 PRINT : PRINT "SELECT OUTPUT TO (S)creen or (P)rinter or (E)nd:"; : LOCATE , , 1
- 290 Q$ = INKEY$: IF Q$ = "" THEN 290
- 300 PRINT Q$; : IF Q$ = "S" OR Q$ = "s" THEN PRINTER = 0: GOTO 340
- 310 IF Q$ = "P" OR Q$ = "p" THEN PRINTER = 1: GOTO 340
- 320 IF Q$ = "E" OR Q$ = "e" THEN RUN
- 330 GOTO 290
- 340 PRINT : PRINT "Choose (D)etailed output or (S)ummary output or (E)nd:"; : LOCATE , , 1
- 350 SUMOUT = 0
- 360 Q$ = INKEY$: IF Q$ = "" THEN 360
- 370 PRINT Q$; : IF Q$ = "D" OR Q$ = "d" THEN 410
- 380 IF Q$ = "S" OR Q$ = "s" THEN SUMOUT = 1: GOTO 410
- 390 IF Q$ = "E" OR Q$ = "e" THEN RUN
- 400 GOTO 360
- 410 IF EOF(1) THEN 1130
- 420 LINE INPUT #1, A$
- 430 IF INSTR(A$, "@@@@@@@") > 0 THEN 440 ELSE GOTO 410'....begin new person
- 440 IF SUMOUT = 0 THEN
- 450 IF PRINTER = 1 THEN LPRINT STRING$(50, "-") ELSE PRINT STRING$(50, "-")
- 460 END IF
- 470 LINE INPUT #1, STUFF$ '...............pull off date and time info
- 480 FDATE$ = MID$(STUFF$, 6, 11)
- 490 FTIME$ = MID$(STUFF$, 22, 8)
- 500 NINFO = VAL(MID$(STUFF$, 36, 5))
- 510 NQUEST = VAL(MID$(STUFF$, 47, 7))
- 520 ISSUM = 0: IF INSTR(STUFF$, "SUMMARY") > 0 THEN ISSUM = 1
- 530 '.............................................print info stuff out
- 540 IF SUMOUT = 0 THEN
- 550 IF PRINTER = 0 THEN PRINT : PRINT FDATE$, FTIME$
- 560 IF PRINTER = 1 THEN LPRINT : LPRINT FDATE$, FTIME$
- 570 END IF
- 580 IF NINFO > 0 THEN
- 590 FOR I = 1 TO NINFO: LINE INPUT #1, INF$
- 600 IF I = 1 THEN GRADEINF$ = INF$' info to use in output summary
- 610 IF SUMOUT = 0 THEN
- 620 IF PRINTER = 1 THEN LPRINT INF$ ELSE PRINT INF$
- 630 END IF
- 640 NEXT I
- 650 END IF
- 660 IF PRINTER = 0 AND SUMOUT = 0 THEN PRINT ELSE LPRINT
- 670 IF ISSUM <> 1 THEN
- 680 FOR I = 1 TO NQUEST'...............results of individual questions
- 690 INPUT #1, ANS$
- 700 NUM = VAL(MID$(ANS$, 4))'.get question number
- 710 K = INSTR(ANS$, "Y:")' locate the TRY: marker
- 720 TRY = VAL(MID$(ANS$, K + 3))
- 730 IF SUMOUT = 0 THEN
- 740 IF PRINTER = 0 THEN
- 750 PRINT NUM; " Answered "; :
- 760 IF TRY = 0 THEN
- 770 PRINT " INCORRECTLY."
- 780 ELSE
- 790 PRINT " correctly on try number "; TRY
- 800 END IF
- 810 END IF
- 820 IF PRINTER = 1 THEN
- 830 LPRINT NUM; " Answered ";
- 840 IF TRY = 0 THEN
- 850 LPRINT " INCORRECTLY."
- 860 ELSE
- 870 LPRINT " correctly on try number "; TRY
- 880 END IF
- 890 END IF
- 900 END IF
- 910 NEXT I
- 920 END IF
- 930 LINE INPUT #1, SUMM$'.......................get the summary line
- 940 RIGHT = VAL(MID$(SUMM$, 15))
- 950 K = INSTR(SUMM$, "of")'.......find of marker in line
- 960 WRONG = NQUEST - RIGHT
- 970 IF SUMOUT = 0 THEN
- 980 IF PRINTER = 0 THEN PRINT : PRINT "Number of Questions = "; NQUEST
- 990 IF PRINTER = 1 THEN LPRINT : LPRINT "Number of Questions = "; NQUEST
- 1000 IF PRINTER = 0 THEN PRINT "Number answered wrong ="; WRONG
- 1010 IF PRINTER = 1 THEN LPRINT "Number answered wrong ="; WRONG
- 1020 IF PRINTER = 0 THEN PRINT "Number answered right ="; RIGHT
- 1030 IF PRINTER = 1 THEN LPRINT "Number answered right ="; RIGHT
- 1040 END IF
- 1050 ZGRADE = (RIGHT / NQUEST) * 100:
- 1060 IF SUMOUT = 0 THEN
- 1070 IF PRINTER = 1 THEN LPRINT : LPRINT "PERCENTAGE RIGHT = "; ZGRADE; " %"
- 1080 IF PRINTER = 0 THEN PRINT : PRINT "PERCENTAGE RIGHT = "; ZGRADE; " %"
- 1090 IF PRINTER = 0 THEN PRINT : PRINT "Please press ENTER "; : LINE INPUT Q$
- 1100 END IF
- 1110 GKT = GKT + 1: Y(GKT) = ZGRADE:
- 1120 NAM$(GKT) = LEFT$(GRADEINF$, 60): ORJ(GKT) = GKT: GOTO 410
- 1130 N = GKT: GOSUB 1160'summary statistics
- 1140 GOSUB 1980
- 1150 PRINT : PRINT "Press ENTER "; : LINE INPUT Q$: RUN
- 1160 ' ------------------------------------------statistics subroutines
- 1170 'IF printer = 0 THEN PRINT : PRINT "Number of observations : "; n
- 1180 'IF printer = 1 THEN LPRINT : LPRINT "Number of observations : "; n
- 1190 PRINT "Calculating Summary Statistics..."; : AX = CSRLIN: AY = POS(0)
- 1200 IF N < 2 THEN PRINT "Too few grades to calculate statistics.": RETURN
- 1210 REM CALL STATISTICS SUBROUTINE
- 1220 P9(1) = 0
- 1230 N8 = 7
- 1240 P9(2) = 25
- 1250 P9(3) = 50
- 1260 P9(4) = 75
- 1270 P9(5) = 100
- 1280 P9(6) = 2.5
- 1290 P9(7) = 97.5
- 1300 GOSUB 1630
- 1310 FOR I = 1 TO 5
- 1320 T(I) = P8(I)
- 1330 NEXT I
- 1340 REM so is s.d.
- 1350 S0 = V ^ .5
- 1360 REM S5 IS SEM
- 1370 S5 = (V / N) ^ .5
- 1380 LOCATE AX, 1: PRINT SPACE$(70); : PRINT
- 1390 IF PRINTER = 1 THEN 1460 ELSE PRINT
- 1400 PRINT "Summary Information": PRINT STRING$(70, "-"): PRINT
- 1410 PRINT USING "N = ######.###"; N
- 1420 PRINT USING "Mean = ######.### St. Dev = #######.###"; A; S0
- 1430 PRINT USING "Median = ######.### S.E.M. = #######.###"; T(3); S5
- 1440 PRINT USING "Minimum = ######.### Sum = #######.###"; T(1); S2
- 1450 PRINT USING "Maximum = ######.### Variance = #######.###"; T(5); V: GOTO 1530
- 1460 LPRINT
- 1470 LPRINT "Summary Information": LPRINT STRING$(70, "-"): LPRINT
- 1480 LPRINT USING "N = ######.###"; N
- 1490 LPRINT USING "Mean = ######.### St. Dev = #######.###"; A; S0
- 1500 LPRINT USING "Median = ######.### S.E.M. = #######.###"; T(3); S5
- 1510 LPRINT USING "Minimum = ######.### Sum = #######.###"; T(1); S2
- 1520 LPRINT USING "Maximum = ######.### Variance = #######.###"; T(5); V
- 1530 IF N < 5 THEN RETURN
- 1540 IF PRINTER = 0 THEN PRINT : PRINT "Five number summary ( 0,25,50,75,and 100 th percentile)"
- 1550 IF PRINTER = 1 THEN LPRINT : LPRINT "Five number summary ( 0,25,50,75,and 100 th percentile)"
- 1560 IF PRINTER = 0 THEN PRINT : PRINT USING " (###.##, ###.##, ###.##, ###.##, ###.##)"; T(1); T(2); T(3); T(4); T(5): PRINT
- 1570 IF PRINTER = 1 THEN LPRINT : LPRINT USING " (###.##, ###.##, ###.##, ###.##, ###.##)"; T(1); T(2); T(3); T(4); T(5): LPRINT
- 1580 RETURN
- 1590 REM STATISTICS SUBROUTINE------------------------------
- 1600 REM INPUT IS ARRAY Y(.) AND LENGTH N
- 1610 REM
- 1620 REM FIRST RANK THA DATA
- 1630 GOSUB 1860 'rank
- 1640 FOR I = 1 TO N8
- 1650 P = P9(I) / 100
- 1660 J = INT((N + 1) * P)
- 1670 G = ((N + 1) * P) - J
- 1680 IF J = 0 THEN P8(I) = Y(1)
- 1690 IF J = 0 THEN GOTO 1730
- 1700 IF J >= N THEN P8(I) = Y(N)
- 1710 IF J >= N THEN GOTO 1730
- 1720 P8(I) = (1 - G) * Y(J) + G * Y(J + 1)
- 1730 NEXT I
- 1740 REM ----------------S1=SUM OF SQUARES----S2=SUM----------
- 1750 S2 = 0
- 1760 S1 = 0
- 1770 FOR I = 1 TO N
- 1780 S2 = S2 + Y(I)
- 1790 S1 = S1 + (Y(I) * Y(I))
- 1800 NEXT I
- 1810 A = S2 / N
- 1820 S3 = S1 - S2 * S2 / N
- 1830 V = S3 / (N - 1)
- 1840 RETURN
- 1850 REM SUBROUTINE RANK---------------------------
- 1860 K = 1
- 1870 FOR I = 1 TO N
- 1880 IF K = 0 THEN 1950
- 1890 K = 0
- 1900 FOR J = 1 TO N - 1
- 1910 IF Y(J) <= Y(J + 1) THEN 1940
- 1920 SWAP Y(J), Y(J + 1)
- 1930 SWAP ORJ(J), ORJ(J + 1)
- 1940 K = 1
- 1950 NEXT J
- 1960 NEXT I
- 1970 RETURN
- 1980 IF N > 10 AND PRINTER = 0 THEN PRINT "Press Enter"; : LINE INPUT Q$
- 1990 IF PRINTER = 0 THEN PRINT : PRINT "Identification Grade Rank"
- 2000 IF PRINTER <> 0 THEN LPRINT : LPRINT "Identification Grade Rank"
- 2010 IF PRINTER = 0 THEN PRINT "--------------------------------------------- ------- ----"
- 2020 IF PRINTER <> 0 THEN LPRINT "--------------------------------------------- ------- ----"
- 2030 IF PRINTER = 0 THEN PRINT " " ELSE LPRINT " "
- 2040 FOR I = 1 TO N
- 2050 FOR J = 1 TO N
- 2060 IF ORJ(J) <> I GOTO 2120
- 2070 INF$ = NAM$(I): IF NAM$(I) = "" THEN INF$ = "TEST #" + STR$(I)
- 2080 IF PRINTER = 0 THEN PRINT INF$, TAB(65); ELSE LPRINT INF$, TAB(65);
- 2090 IF PRINTER = 0 THEN PRINT USING "###.## ###"; Y(J); N - J + 1
- 2100 IF PRINTER = 1 THEN LPRINT USING "###.## ###"; Y(J); N - J + 1
- 2110 GOTO 2130
- 2120 NEXT J
- 2130 NEXT I
- 2140 IF PRINTER = 1 THEN LPRINT CHR$(12); '..cause the printer to page
- 2150 RETURN
-
-